6. 常见登陆发方式

  • Cookie-Session 认证
    • 认证过程大致如下:
      • 用户输入用户名、密码或者用短信验证码方式登录系统;
      • 服务端验证后,创建一个 Session 信息,并且将 SessionID 存到 cookie,发送回浏览器;
      • 下次客户端再发起请求,自动带上 cookie 信息,服务端通过 cookie 获取 Session 信息进行校验;
    • 弊端
      • 随着用户数量增加,服务端开销会增加
      • 只能在 web 场景下使用,如果是 APP 中,不能使用 cookie 的情况下就不能用了;
      • 即使能在 web 场景下使用,也要考虑跨域问题,因为 cookie 不能跨域;
      • cookie 存在 CSRF(跨站请求伪造)的风险;
      • 如果是分布式服务,需要考虑 Session 同步问题;
  • OAuth 认证
    • OAuth 认证比较常见的就是微信登录、微博登录、qq登录等,
    • 简单来说就是利用这些比较权威的网站或应用开放的 API 来实现用户登录
    • 用户可以不用在你的网站或应用上注册账号,直接用已有的微信、微博、qq 等账号登录。
    • 具体你的身为信息,真假等由鉴定第三方负责,比如微信,微博,qq等
    • 你登录的服务器只负责接收结果
  • 基于JWT的Token认证
    • JSON Web Token(JWT)是一个非常轻巧的规范
    • 具体使用参见后面JWT的内容
    • 优点
      • 使用 json 作为数据传输,通用,体积小,便于传输;
      • 不需要在服务器端保存相关信息;
      • jwt 载荷部分可以存储业务相关的信息(非敏感的),例如用户信息、角色等;